** Component **
encapsulates template, data and the behavior of a view
Every angular app has atleast one component
COmponents are small managable modules
They are also quite reusable

Each component is a typescript class

Has properties and methods

Components are decoupled from the DOM for us to be able to do unit tests


**Service**
Get/save data from backend
Used to do any work that doesn't interact with the view
Encapsulates any non user interface logic like 
HTTP Cals, logging, data access, configuration etc

**Router**
Responsible for navigation

**Directive**
Work with the DOM to modify it/extend their behavior
<input type="text" autoGrow/>.
Angular has some, we can create custom ones

***COmponents***
In angular each file is considered a module
each module is expected to export one or more things, a class, function or variable.
THis makes the class available to other modules in the application.
Later when required we just import it
